package com.hxzy.shop.service;


import com.github.pagehelper.PageInfo;
import com.hxzy.shop.common.dto.auth.req.*;
import com.hxzy.shop.common.dto.auth.resp.RoleAuthorityTreeResp;
import com.hxzy.shop.common.dto.auth.resp.RoleDetailResp;
import com.hxzy.shop.common.dto.auth.resp.RoleListResp;
import com.hxzy.shop.dto.auth.resp.LoadUserResp;
import com.hxzy.shop.entity.AdminRole;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 认证授权服务
 * @Author wxy
 * @Date 2021/3/16 16:03
 * @Version 1.0
 */
public interface AuthService {

    /**
     * 获取用户信息(包含菜单权限)
     *
     * @return
     */
    LoadUserResp loadUser(Long accountId);


    /**
     * admin_role分页查询
     * @param req
     * @return
     */
    PageInfo<RoleListResp> roleList(RoleListReq req);


    /**
     * 根据主键查询
     * @param roleId
     * @return
     */
    AdminRole roleDetail(Long roleId);


    /**
     * 编辑角色
     * @param req
     * @return
     */
    int editRole(EditRoleReq req);

    /**
     * 新增角色
     * @param req
     * @return
     */
    int addRole(AddRoleReq req);

    /**
     * 更改角色状态
     * @param req
     * @return
     */
    int changeRoleState(ChangeRoleStateReq req);

    /**
     * 角色权限树
     * @param roleId
     * @return
     */
    List<RoleAuthorityTreeResp> roleAuthorityTree(Long roleId);

    /**
     * 修改角色权限
     * @param req
     * @return
     */
    int changeRoleAuthority(ChangeRoleAuthorityReq req);

    /**
     * 清空角色登录信息（删除redis当前用户信息）
     *
     * @param roleId
     */
    void emptyToken(Long roleId);
}
